import java.util.HashMap;
import java.util.Map;

public class Solution593 {
    public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) {
        Map<Integer,Integer> map=new HashMap<>();
        map.put(dis(p1,p2),map.getOrDefault(dis(p1,p2),0)+1);
        map.put(dis(p1,p3),map.getOrDefault(dis(p1,p3),0)+1);
        map.put(dis(p1,p4),map.getOrDefault(dis(p1,p4),0)+1);
        map.put(dis(p2,p3),map.getOrDefault(dis(p2,p3),0)+1);
        map.put(dis(p2,p4),map.getOrDefault(dis(p2,p4),0)+1);
        map.put(dis(p3,p4),map.getOrDefault(dis(p3,p4),0)+1);
        if (map.size()!=2 || map.containsKey(0)){
            return false;
        }
        return map.containsValue(4);
    }

    int dis(int[] a,int[] b){
        return (a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1]);
    }

    public static void main(String[] args) {
        System.out.println(new Solution593().validSquare(new int[]{0,0},new int[]{1,1},new int[]{1,0},new int[]{0,1}));
    }
}
